\chapter{概述}
\verb!Tenon!是一门专用于机械臂程序开发的编程语言。

\verb!Tenon执行器!（TVM）可以加载并执行\verb!Tenon可执行程序!。
Tenon执行器可以移植到各个平台或硬件上，以方便的让Tenon可执行程序在各种平台上运行。

\verb!任务!(Task)是Tenon可执行程序的执行单元。一个Tenon可执行程序可以只包含一个任务，
也可以包含多个任务（MultiTask）。不同的任务运行在各自的线程中。

\section{项目与模块结构}
\verb!项目!（Project）是Tenon程序的基本组织单元，对应文件系统中的一个目录。
每个项目目录包含多个以.t为后缀的Tenon源程序文件。

\verb!子程序!（ModuleItem）是项目中的基本组成元素，每个.t源文件定义一个子程序。
子程序可以包含函数定义或变量声明。

\verb!模块!（Module）是项目编译的输出结果。编译器以项目为输入，
解析项目目录中的所有.t源文件，将整个项目编译生成一个模块。
一个模块只能包含一个项目，即一对一的关系。
在编译过程中，每个模块会先生成\verb!Tenon中间码文件!，
该中间码文件包含模块的数据和代码的中间码表示。

模块是功能相关的数据和算法的集合，划分模块的目的是将在功能上存在联系的数据和算法组合在一起，
遵循模块内紧耦合、模块间松耦合的设计原则。

如果内置类型不能满足需求，还可以在模块内添加用户自定义类型。

\section{编译流程}
\verb!Tenon程序的编译!是指从Tenon源程序文件生成Tenon可执行文件的过程：

\begin{enumerate}
\item \textbf{源码解析}：编译器以项目目录为输入，解析其中所有的.t源文件
\item \textbf{模块生成}：将每个项目编译生成对应的模块
\item \textbf{任务构建}：将一个或多个模块合并，生成最终的可执行文件（.tbin）
\end{enumerate}

\verb!任务!（Task）是由一个或多个模块组成的可执行单元。
每个任务对应一个.tbin可执行文件，可以独立运行在Tenon执行器中。
任务需要指定一个入口函数，默认为main函数。
